package cn.gz.ibix.library.util;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

/**
 * 项目名称：android_tool
 * <br>类描述：
 * <br>创建人：htliu
 * <br>创建时间：2019/7/10 18:10
 * <br>修改人:
 * <br>修改时间：2019/7/10 18:10
 * <br>修改备注：
 * <br>@version
 */
public class GenericSuperclassUtil {
    /*
     * 获取泛型类Class对象，不是泛型类则返回null
     */
    public static Class<?> getActualTypeArgument(Class<?> clazz) {
        Class<?> entitiClass = null;
        Type genericSuperclass = clazz.getGenericSuperclass();
        if (genericSuperclass instanceof ParameterizedType) {
            Type[] actualTypeArguments = ((ParameterizedType) genericSuperclass)
                    .getActualTypeArguments();
            if (actualTypeArguments != null && actualTypeArguments.length > 0) {
                entitiClass = (Class<?>) actualTypeArguments[0];
            }
        }

        return entitiClass;
    }
}
